/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Presente;

import BancoDados.BancoDados;
import Coleção.Coleçãoproduto;
import Entidade.CompraModel;
import Entidade.EstoqueModel;
import Entidade.FornecedorModel;
import Entidade.ItemCompraModel;
import Entidade.NotafiscalModel;
import Entidade.ProdutoModel;
import Entidade.ProdutoModelVenda;
import Entidade.VendedorModel;
import Pesistencia.CompraPersistencia;
import Pesistencia.EstoquePersistencia;
import Pesistencia.ItemCompraPersistencia;
import Pesistencia.NotaFiscalVendaPersistencia;
import Pesistencia.ProdutoPersistencia;
import View.EfetuarCompra;
import View.EfetuarCompra2vie;
import View.EfetuarVendaView1;
import View.EfetuarVendaView2;
import View.NFCompra;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Iterator;
import javax.swing.JOptionPane;
import javax.swing.table.DefaultTableModel;


public class EfetuarCompra2 {
    
    
     private EfetuarCompra2vie view = new EfetuarCompra2vie();
     
     
              Coleçãoproduto produto = new Coleçãoproduto();
              
              double quant =0 ;
              double valortotal = 0 ;
              FornecedorModel vendedor;
               private BancoDados banco = new BancoDados();
              CompraPersistencia vendas = new CompraPersistencia(banco);
              ItemCompraPersistencia itens = new ItemCompraPersistencia(banco);
              ProdutoPersistencia produtos = new ProdutoPersistencia(banco);
              NotaFiscalVendaPersistencia not = new NotaFiscalVendaPersistencia(banco);
              EstoqueModel estoque ;
              EstoquePersistencia estoques = new EstoquePersistencia(banco);
              NFCompra telavenda = new NFCompra();
           //   EfetuarCompra compra = new EfetuarCompra();
    // VendedorModel vendedor = new VendedorModel();
  
             
              
    public EfetuarCompra2(EfetuarCompra2vie vie,FornecedorModel vendedor1) {
        view = vie ;
        vendedor = vendedor1;
         view.getBtncancelar().addActionListener(new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                cancelar();
            }
       });
       
       view.getBtnsalvar().addActionListener(new ActionListener() {

           @Override
           public void actionPerformed(ActionEvent e) {
              salvar();
           }

          
       });
       
       view.getVoltar().addActionListener(new ActionListener() {

           @Override
           public void actionPerformed(ActionEvent e) {
              voltar();
           }

          
       });
       
       
       view.getBtnadd().addActionListener(new ActionListener() {

           @Override
           public void actionPerformed(ActionEvent e) {
              Adicionar();
           }

          
       });
       view.getBtnretirar().addActionListener(new ActionListener() {

           @Override
           public void actionPerformed(ActionEvent e) {
             retirar();
           }

          
       });
              view.setLocationRelativeTo(null);

        view.setVisible(true);
    }
    
    public void retirar(){
        
    String codigo = view.getTbltabelaproduto().getValueAt(view.getTbltabelaproduto().getSelectedRow(),0).toString(); 
    ProdutoModelVenda  produtos ;
    produtos = produto.buscar(Integer.parseInt(codigo));
    valortotal =(( valortotal * (1 +(10/100))) - (produtos.getProduto().getValor() * produtos.getQuant()));
    produto.Remover(produtos);
    view.getTxtvalortotal().setText(Double.toString(valortotal));
    EfetuarVendaView2 vie = new EfetuarVendaView2();
    carregartabela(produto);
    
    }             
    
    public void salvar(){
        
    String d = view.getDt().getText();
            
                System.out.println(""+d); 
    String d1 = view.getDt1().getText();
    System.out.println(vendedor.getCodigo()); 
    CompraModel venda = new CompraModel(vendas.recuperarUltimoCodigo()+1,vendedor.getCodigo(),d ,d1);
    System.out.println("DELETE");
    vendas.cadastrar(venda);
    NotafiscalModel nota = new NotafiscalModel(venda.getCodigo(), d1);
    not.cadastrar(nota);
    System.out.println("DELETE");
    
    
       for (int i = 0; i < produto.getProdutos().size(); i++) {
           
            
            ProdutoModelVenda produtoModel = (ProdutoModelVenda) produto.getProdutos().get(i); 
            ItemCompraModel itemvenda = new ItemCompraModel(venda.getCodigo(),produtoModel.getProduto().getCodigo(),produtoModel.getProduto().getValor()*0.90,produtoModel.getQuant());
            itens.cadastrar(itemvenda);
            
            EstoqueModel p = estoques.buscar(produtoModel.getProduto().getCodigo());
            if (p== null){
                    estoque = new EstoqueModel(produtoModel.getProduto().getCodigo(),d,itemvenda.getQuant());
                    estoques.cadastrar(estoque);
              }
            else{
                    estoque = estoques.buscar(produtoModel.getProduto().getCodigo());
                    estoque.setQuant(estoque.getQuant()+itemvenda.getQuant());
                    estoques.editar(estoque);
            }
           
            view.setVisible(false);
            telavenda.getTxtvendedor().setText(vendedor.getNome().toString());
            telavenda.getTxtvendedor().setEnabled(false);
            telavenda.getTxtdata().setText(d);
            telavenda.getTxtvendedor().setText(d);
            telavenda.getTxtvalor().setText(Double.toString(quant));
            telavenda.getTxtvalortotal().setText(Double.toString(valortotal));
            telavenda.getTxtvenda().setText(Integer.toString(venda.getCodigo()));
            telavenda.getTxtdata().setEditable(false);
            telavenda.getTxtvalor().setEditable(false);
            telavenda.getTxtdata().setEditable(false);
            telavenda.getTxtvalortotal().setEditable(false);
            telavenda.getTxtvenda().setEditable(false);
            carregartabela(produto);
            telavenda.setLocationRelativeTo(null);
            telavenda.setVisible(true); 
            telavenda.getBtnimprimir().addActionListener(new ActionListener() {

           @Override
           public void actionPerformed(ActionEvent e) {
               JOptionPane.showMessageDialog(telavenda, "Não existe nenhuma impressora ligada ao software, =/ ");
              telavenda.setVisible(false);
           }

          
       });
               
            
            
          }
    
 
    }   
 
 public void  Adicionar(){
     
     BancoDados banco = new BancoDados();
     ProdutoPersistencia produtos = new ProdutoPersistencia(banco);
     ProdutoModel codigo = produtos.buscar(Integer.parseInt(view.getTxtcodigoproduto().getText()));
     ProdutoModelVenda produtu = new ProdutoModelVenda(codigo,Integer.parseInt(view.getTxtquant().getText()) );
     produto.Add(produtu);
    
      for (Iterator< ProdutoModelVenda > it = produto.getProdutos().iterator(); it.hasNext();) {
          
            ProdutoModelVenda  produtoModel = it.next();  
            quant = (produtoModel.getQuant() * produtoModel.getProduto().getValor());
            
          }
     valortotal =valortotal + (quant * (1 - (10/100)));
     view.getTxtvalortotal().setText(Double.toString(valortotal));
     EfetuarCompra2vie vie = new EfetuarCompra2vie();
   
     carregartabela(produto);
     
     
 }
 
 
 public void  voltar(){
 EfetuarVendaView1 vie = new EfetuarVendaView1();
EfetuarVendaPresente1 cont = new EfetuarVendaPresente1(vie);
 view.setVisible(false);
 }
 
public void cancelar (){

view.setVisible(false);

    }

public final void carregartabela(Coleçãoproduto produtos){
    
    DefaultTableModel tm = new DefaultTableModel (
            
            new Object[][] {},
            new String []{" codProduto","Nome","Valor","Descrição","Quant"}){
                
                public boolean isCellEditable(int ronw, int col){
                    return false;
                }
            };
    tm.setNumRows(0);
    
    for (int i = 0; i < produtos.getProdutos().size(); i++) {
        ProdutoModelVenda produto = (ProdutoModelVenda) produtos.getProdutos().get(i);
        
        tm.addRow(new Object[]{produto.getProduto().getCodigo(),produto.getProduto().getNome(),produto.getProduto().getValor()*0.90,produto.getProduto().getDescricao(),produto.getQuant()});
        
        
    }
     view.getTbltabelaproduto().setModel(tm);
     telavenda.getTbltabelaproduto().setModel(tm);      
            
}
}
